# log_config.py
from loguru import logger
import os

# 设置日志文件路径
log_path = "logs/"
os.makedirs(log_path, exist_ok=True)
loggers = {}

# 配置日志输出到控制台和文件
logger.add(
    sink=log_path + "app_{time:YYYY-MM-DD}.log",
    rotation="00:00",
    level="INFO",  # 日志级别
    format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}",  # 日志格式
    encoding="utf-8",  # 编码格式
    enqueue=True,  # 异步写入日志
    backtrace=True,  # 是否记录堆栈信息
    diagnose=True,  # 是否记录详细的错误信息
)

# 添加错误日志处理器，单独记录错误日志
logger.add(
    f"{log_path}/error_{{time:YYYY-MM-DD}}.log",  # 错误日志文件
    rotation="00:00",  # 每天午夜自动轮转日志文件
    format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}",  # 自定义日志格式
    encoding="utf-8",  # 指定文件编码
    level="ERROR",  # 只记录 ERROR 和 CRITICAL 级别的日志
    enqueue=True,  # 异步写入日志
)
# 自定义文件名日志
def custom_logger(name):
    if name not in loggers:
        loggers[name] = logger.bind(name=name)
        loggers[name].add(
            sink=log_path + f"{name}_{{time:YYYY-MM-DD}}.log",
            rotation="00:00",
            level="INFO",
            format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}",
            encoding="utf-8",
            enqueue=True,
    )
    return loggers[name]
